/**
 * 生成斐波那契数列并返回。
 *
 * 斐波那契数列是这样一个数列：1, 1, 2, 3, 5, 8, ...
 * 数列从1开始，后续的每个数都是前两个数之和。
 *
 * @param {number} n - 数列的长度，即返回的数组中应包含n个斐波那契数。
 * @return {number[]} - 返回一个包含n个斐波那契数的数组。
 */
export default function fibonacci(n) {
  // 初始化斐波那契数列数组，起始值为1
  const fibSequence = [1];

  // 当前值和前一个值，初始为斐波那契数列的第一个数
  let currentValue = 1;
  let previousValue = 0;

  // 如果n为1，直接返回包含单个1的数组
  if (n === 1) {
    return fibSequence;
  }

  // 初始化迭代计数器，用于控制循环生成斐波那契数的次数
  let iterationsCounter = n - 1;

  // 循环生成斐波那契数，直到达到所需的数量
  while (iterationsCounter) {
    // 计算下一个斐波那契数
    currentValue += previousValue;
    // 更新前一个值，为下一次迭代准备
    previousValue = currentValue - previousValue;

    // 将计算出的斐波那契数添加到数列中
    fibSequence.push(currentValue);

    // 更新迭代计数器
    iterationsCounter -= 1;
  }

  // 返回生成的斐波那契数列
  return fibSequence;
}
